using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Gratamira.CapaNegocio;

namespace Gratamira.Presentacion
{
    public partial class frmMaeBodega : frmBaseMaestra, IBaseMaestra
    {
        private Bodega mBodega;
        //Adicionar variable de fuente de enlace
        private BindingSource fuenteEnlace = new BindingSource();

        #region Constructores
        public frmMaeBodega(string pBodegaID, estadoPantalla pModoPantalla)
        {
            InitializeComponent();
            if (pModoPantalla != estadoPantalla.Insertar)
            {
                mBodega = new Bodega(pBodegaID);
            }
            else
            {
                mBodega = new Bodega();
            }
            base.Estado = pModoPantalla;
            this.Text = Usuario.Empresa + " - Maestra de Bodega";
        }
        #endregion

        public override void deshabilitarControles()
        {
            //No permite modificar el contenido de los controles
            txtCodigo.Enabled = false;
            txtNombre.Enabled = false;
            txtDescripcion.Enabled = false;
            txtUbicacion.Enabled = false;
        }

        public override void habilitarControles()
        {
            //Permite modificar el contenido de los controles
            if (base.Estado == estadoPantalla.Insertar)
            {
                txtCodigo.Enabled = true;
            }
            txtNombre.Enabled = true;
            txtDescripcion.Enabled = true;
            txtUbicacion.Enabled = true;
        }

        public override void unirDatosClaseForma()
        {
            fuenteEnlace.DataSource = mBodega;
            txtCodigo.DataBindings.Add("Text", fuenteEnlace, "BodegaID");
            txtNombre.DataBindings.Add("Text", fuenteEnlace, "Nombre");
            txtDescripcion.DataBindings.Add("Text", fuenteEnlace, "Descripcion");
            txtUbicacion.DataBindings.Add("Text", fuenteEnlace, "Ubicacion");
        }

        public override bool salvarCambios()
        {
            //Salvar nuevo registro
            // Codigo de la empresa es fijo, mientras se implementa multi empresa
            mBodega.EmpresaID = "1";
            mBodega.UsuarioCreacion = Usuario.NombreUsuario;
            mBodega.UsuarioModificacion = Usuario.NombreUsuario;
            return mBodega.insertarBodega();
        }

        public override void actualizarCambios()
        {
            //Salvar cambios al registro
            mBodega.UsuarioModificacion = Usuario.NombreUsuario; 
            mBodega.actualizarBodega();
        }

        public override void limpiarControles()
        {
            mBodega.BodegaID = "";
            mBodega.Nombre = "";
            mBodega.Descripcion = "";
            mBodega.Ubicacion = "";
            fuenteEnlace.ResetBindings(false);
        }

        public override bool verificarDatos()
        {
            if (utilidadesPresentacion.verificarContenido(txtCodigo,epBodega) &&
                utilidadesPresentacion.verificarContenido(txtNombre, epBodega) && utilidadesPresentacion.verificarContenido(txtDescripcion, epBodega) &&
               utilidadesPresentacion.verificarContenido(txtUbicacion, epBodega))
            {
                return true;
            }
            else
            {
                return false;
            }    
        }

        public override void leerDatosAuditoria(out string pUsuaCrea, out string pFechCrea, out string pUsuaModi, out string pFechModi) 
        {
            pUsuaCrea = mBodega.UsuarioCreacion;
            pUsuaModi = mBodega.UsuarioModificacion;
            pFechCrea = mBodega.FechaCreacion;
            pFechModi = mBodega.FechaModificacion;
        }

        public override bool hayDatosModificados()
        {
            return mBodega.Modificada;
        }

        #region Eventos

        private void txtCodigo_Enter(object sender, EventArgs e)
        {
            txtCodigo.SelectAll();
        }

        private void txtNombre_Enter(object sender, EventArgs e)
        {
            txtNombre.SelectAll();
        }

        private void txtDescripcion_Enter(object sender, EventArgs e)
        {
            txtDescripcion.SelectAll();
        }

        private void txtUbicacion_Enter(object sender, EventArgs e)
        {
            txtUbicacion.SelectAll();
        }
        #endregion
    }
}